As those in the art will appreciate, a magnetic resonance imaging system may be considered as a state machine where, at any given instant, the machine resides in a predetermined one of a finite set of possible states. For example, in the exemplary embodiment, a single spin echo data gathering sequence may involve the generation of successive 90.degree. and 180.degree. RF "flip" of nutation pulses in conjunction with a specific sequence of switched x, y, z coordinate magnetic gradients (superimposed on a static z-axis magnetic field) coupled with the sampled measurement of RF spin echo responses. As will be explained in more detail below, such a sequence of events actually comprises a succession of distinct machine states for the MRI system. In the exemplary embodiment, a conventional sequence controller is utilized so as to provide proper sequence control of waveform generators, RF transmitters and receivers, magnetic gradient amplifiers, analog-to-digital sampling circuits, and the like. After a complex iteration of what may comprise a sequence of thousands of distinct machine states, sufficient digital data may be accumulated to permit the calculation of a digitized image for one or more "slices" of an object (e.g., a human body or a portion thereof) under test.
Typically, the detailed design of a specific imaging sequence requires a comprehensive and accurate understanding of the MRI process which is possessed by a relatively few high-level experienced persons whose available time and patience for such voluminous and detailed programming chores becomes burdensome and expensive. In some ways, the generalized problem is analogous to that presented much earlier in the art of computer programming generally. There, it was noted that certain subsets or segments of machine language program instructions were continually being repeated whenever it was necessary to perform a common task. Accordingly, to expedite the computer programming process, higher level languages were devised and utilized with a pre-defined syntax to generate input to so-called "assembler" or "compiler" programs which, in turn, machine generated the machine level object code for execution by a CPU so as to effect an application program defined by the sequence of higher level (e.g., assembly or compiler input) language statements.
When presented with the problem of programming the sequence controller for an MRI system, it was also earlier noted that certain segments of program steps tend to be repeated when performing common tasks. Accordingly, in a manner analogous to that employed for generating computer programs in general, a specialized assembly level language has been used in the past for generating the necessary sequence of machine executable instructions for the MRI sequence controller.
However, even utilizing such prior techniques, it has typically still been necessary (especially for multi-slice sequences) for a relatively high level human "programmer" to design relatively long detailed sets of program statements which include subsets of nearly identical statements (but including important subtle changes). Not only does this require the expenditure of a rather large human programming effort, it also often requires additional program memory. And then when one wants to change the program so as to achieve a different imaging procedure, the generation of the required new program can be quite tedious and time consuming.